using System;
using System.Collections.Generic;
using System.Text;

namespace Xfinity.Maths
{
    /// <summary>
    /// A class representing a generic function.
    /// </summary>
    public abstract class Function<TInput, TOutput>
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="Function"/> class.
        /// </summary>
        protected Function()
        {
                
        }

        /// <summary>
        /// Evaluates the function at the location.
        /// </summary>
        /// <param name="location">The location.</param>
        /// <returns>
        /// The value at the location.
        /// </returns>
        public abstract TOutput Evaluate(TInput location);
    }
}
